//
//  demo2.cpp
//  OpenGLDemo
//
//  Created by 樊星 on 2020/4/22.
//  Copyright © 2020 樊星. All rights reserved.
//

#include "demo2.hpp"

//GLTool.h头文件包含了大部分GLTool中类似C语言的独立函数
#include "GLTools.h"

//在Mac系统下，‘#include<glut/glut.h>’，在Windows和Linux上，我们使用freeglut的静态库版本并且需要添加一个宏
#include <GLUT/GLUT.h>


//简单的批次容器，是GLTools的一个简单的容器类。
GLBatch triangleBatch;

//定义⼀个，着⾊管理器
GLShaderManager shaderManager;

//自定义函数，通过glutReshaperFunc(函数名)注册为重塑函数，当屏幕大小发生变化/护着第一次创建窗口时，会调用该函数调整窗口大小、视口大小
//窗口大小改变时接收新的宽度和高度，其中0，0代表窗口中视口的左下角坐标，w，h带包像素
/*
 changeSize 触发条件：
 1. 新建窗口
 2. 窗口尺寸发生调整
 
 处理业务：
 1. 设置OpenGL 视口
 2. 设置OpenGL 投影方式
 */
void ChangeSize(int width, int height){
    
    glViewport(0, 0, width, height);
}

//main 函数：程序入口.OpenGL 是面向过程编程，所以你会发现利用OpenGL处理图形/图像都是链式形式，以及基于OpenGL封装的图像处理框架也是链式编程
void demo2Init(int argc, char *argv[]){
    
//    glutInit(&argc, argv);
//
//    glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGBA|GLUT_DEPTH|GLUT_STENCIL);
//
//    glutInitWindowSize(800, 600);
//
//    glutCreateWindow("Triangle");
//
//    glutReshapeFunc(ChangeSize);
//
//    glutDisplayFunc(RenderScene);
//
//    GLenum status = glewInit();
//
//    if (GLEW_OK != status) {
//        printf("GLEW Error:%s\n", glewGetErrorString(status));
//    }
//
//    setupRC(); //设置数据
//    glutMainLoop(); //类似于iOS runloop运行循环
}
